{"componentChunkName":"component---node-modules-gatsby-theme-chronoblog-src-templates-post-js","path":"/best-websites-for-practicing-test-automation/","result":{"data":{"mdx":{"id":"7f7dfbff-bf24-5172-b6f2-90f7634b2b2f","excerpt":"Why use demo websites for test automation practice Before investing time in learning and building out a test suite against a new automation…","frontmatter":{"title":"Best Websites for Practicing Test Automation","date":"2023-02-10T00:00:00.000Z","description":"Looking for example demo sites to practice your test automation against with Selenium, Cypress, or NightwatchJS? Here is a list of the top demo websites for practicing your test automation skills against.","tags":["quality assurance","software testing","nightwatchjs","selenium","post'"],"cover":{"childImageSharp":{"fluid":{"base64":"data:image/jpeg;base64,/9j/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wgARCAAKABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAUDBgf/xAAWAQEBAQAAAAAAAAAAAAAAAAADAgT/2gAMAwEAAhADEAAAAcRYV9gGeQVkH//EAB0QAAIBBAMAAAAAAAAAAAAAAAIDBAEREhMhMTP/2gAIAQEAAQUCG5hoeIuVXKP6y+EdD//EAB0RAAEDBQEAAAAAAAAAAAAAAAEAAgMEERKh4fD/2gAIAQMBAT8BmjMvuhNp3AWy11f/xAAaEQACAgMAAAAAAAAAAAAAAAABAwACESEx/9oACAECAQE/AWrNuQKsNZn/xAAfEAACAgEEAwAAAAAAAAAAAAABAgARAxASMUEzcYH/2gAIAQEABj8CRUA3N3FvHjehXAueNB8EI60X1P/EAB0QAQADAAEFAAAAAAAAAAAAAAEAESExQXGRseH/2gAIAQEAAT8h23wfU6okqy8sGRbXFPpidnZEpTWEOBkf/9oADAMBAAIAAwAAABD/AC//xAAaEQEAAgMBAAAAAAAAAAAAAAABACERUWGR/9oACAEDAQE/EKMQOi3uoAsHqP/EABkRAQADAQEAAAAAAAAAAAAAAAEAIWHB4f/aAAgBAgEBPxAUEBovSA01ns//xAAdEAEBAAICAwEAAAAAAAAAAAABEQAhMVFBgbHR/9oACAEBAAE/EDsuS74n1uHeDgZNKylYLrTcJGjR5z+PrHXq23pZzMUUSqjORuEi7UzVa5//2Q==","aspectRatio":2,"src":"/static/9f7333124c7c1c15d3155085a6ed37a7/3e61c/best-sites-for-test-practice.jpg","srcSet":"/static/9f7333124c7c1c15d3155085a6ed37a7/7fcb3/best-sites-for-test-practice.jpg 192w,\n/static/9f7333124c7c1c15d3155085a6ed37a7/42594/best-sites-for-test-practice.jpg 384w,\n/static/9f7333124c7c1c15d3155085a6ed37a7/3e61c/best-sites-for-test-practice.jpg 768w","srcWebp":"/static/9f7333124c7c1c15d3155085a6ed37a7/dd090/best-sites-for-test-practice.webp","srcSetWebp":"/static/9f7333124c7c1c15d3155085a6ed37a7/ae504/best-sites-for-test-practice.webp 192w,\n/static/9f7333124c7c1c15d3155085a6ed37a7/fef30/best-sites-for-test-practice.webp 384w,\n/static/9f7333124c7c1c15d3155085a6ed37a7/dd090/best-sites-for-test-practice.webp 768w","sizes":"(max-width: 768px) 100vw, 768px","presentationWidth":768,"presentationHeight":382},"resize":{"src":"/static/9f7333124c7c1c15d3155085a6ed37a7/3e61c/best-sites-for-test-practice.jpg"}}}},"fields":{"slug":"/best-websites-for-practicing-test-automation/"},"body":"var _excluded = [\"components\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n/* @jsxRuntime classic */\n/* @jsx mdx */\n\nvar _frontmatter = {\n  \"title\": \"Best Websites for Practicing Test Automation\",\n  \"cover\": \"./best-sites-for-test-practice.jpg\",\n  \"date\": \"2023-02-10T00:00:00.000Z\",\n  \"description\": \"Looking for example demo sites to practice your test automation against with Selenium, Cypress, or NightwatchJS? Here is a list of the top demo websites for practicing your test automation skills against.\",\n  \"tags\": [\"quality assurance\", \"software testing\", \"nightwatchjs\", \"selenium\", \"post'\"]\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h2\", {\n    \"id\": \"why-use-demo-websites-for-test-automation-practice\"\n  }, \"Why use demo websites for test automation practice\"), mdx(\"p\", null, \"Before investing time in learning and building out a test suite against a new automation framework it is a good idea to try it out against different kinds of websites to ensure the framework performs reliably and is easy to work with. For example, if you are using Selenium currently, but are interesting in trying Cypress, Nightwatch, WebDriverIO, or Playwright try doing more than just the basic example against these sites. This way you don't get too invested to find out your chosen automation framework doesn't work on some important area you need to write automation for.\"), mdx(\"p\", null, \"You'll want to try out your test automation framework against things like:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"iFrames\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Modal dialogs\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"New tabs\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Multiple windows\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Asynchronous loading of content\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"File upload dialogs\")), mdx(\"p\", null, \"You may not have one or all of these scenarios in your current automated software testing project. These demo sites become useful to provide somewhere to practice skills around these harder scenarios if you don't get exposure in your normal everyday feature testing.\"), mdx(\"p\", null, \"I've compiled a list of the best websites I've come across to practice or demo test automation frameworks against in the list below. They include the harder to automate scenarios just mentioned.\"), mdx(\"h2\", {\n    \"id\": \"recommended-demo-websites-for-test-automation-practice\"\n  }, \"Recommended demo websites for test automation practice\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\\"The Internet\\\" \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com/saucelabs/the-internet\"\n  }, \"github\"), \" or \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://the-internet.herokuapp.com/\"\n  }, \"live site\"))), mdx(\"p\", null, \"This GitHub repository is a collection of common test automation scenarios including hard to automate situations; nested frames, shadow DOM, keypresses, and complicated DOMs.\"), mdx(\"ol\", {\n    \"start\": 2\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The \", mdx(\"em\", {\n    parentName: \"li\"\n  }, \"Automation Exercise\"), \" clothing store \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.automationexercise.com/\"\n  }, \"automationexercise.com\"))), mdx(\"p\", null, \"This example clothing storefront has both a web front end to test against and APIs. The site even includes test cases to guide you.\"), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"LetCode \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://letcode.in/test\"\n  }, \"letcode.in\"))), mdx(\"p\", null, \"This site isolates examples around common DOM elements letting you practice on specific examples of web elements like inputs, tables, alerts, slides, calendars, and more.\"), mdx(\"ol\", {\n    \"start\": 4\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"UI Test Automation Playground \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://www.uitestingplayground.com/\"\n  }, \"uitestingplayground.com\"))), mdx(\"p\", null, \"Smaller site, but it contains edge cases for load delays, mouse over behavior, dynamic IDs, and automation issues arising from hidden layers.\"), mdx(\"ol\", {\n    \"start\": 5\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"SwagLabs \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.saucedemo.com/\"\n  }, \"saucedemo.com\"))), mdx(\"p\", null, \"Another demo web storefront useful for testing login and shopping cart flows. A key distinction on this site is that it has 4 different logins you can use for different experiences for the same site; normal, locked out, problem user, and performance glitch user. Maintained by the folks at SauceLabs.\"), mdx(\"ol\", {\n    \"start\": 6\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Angular Banking Site \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://www.globalsqa.com/angularJs-protractor/BankingProject\"\n  }, \"GlobalsQA\"))), mdx(\"p\", null, \"Very small example bank website written in Angular for testing your automation framework against a website written in Angular. The site has login scenarios as well as transaction listing, deposits, and withdrawl behavior workflows.\"), mdx(\"ol\", {\n    \"start\": 7\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Forms sandbox \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://automatenow.io/sandbox/\"\n  }, \"AutomateNow\"))), mdx(\"p\", null, \"Small, straight-forward single page site for practicing interactions with typical form controls, search, pop up dialogs, and a map.\"), mdx(\"ol\", {\n    \"start\": 8\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Automation Practice \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://qa-practice.netlify.app/\"\n  }, \"QA-Practice\"))), mdx(\"p\", null, \"Clean site that combines several different testing exercises; common web elements, an API with Swagger documentation, small ecommerce site, and a buggy web form you can use to challenge candidates to see how many bugs they can discover.\"), mdx(\"h2\", {\n    \"id\": \"recommended-api-testing-sites\"\n  }, \"Recommended API testing sites\"), mdx(\"p\", null, \"If you are learning SuperTest + Mocha for API Test automation or learning Postman the following sites are handy REST APIs to practice tests against.\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Swagger Petstore \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://petstore.swagger.io/\"\n  }, \"petstore.swagger.io\"))), mdx(\"p\", null, \"Manage an example pet store inventory through this API. This site shows off the usefulness in Swagger when documenting REST APIs, but you can also practice API testing with it.\"), mdx(\"ol\", {\n    \"start\": 2\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Restful Booker \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://restful-booker.herokuapp.com/apidoc/index.html\"\n  }, \"restful-booker.herokuapp.com\"))), mdx(\"p\", null, \"Test all kinds of CRUD (Create, Update, Delete) REST API scenarios using this example booking API.\"), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"FakeRestAPI \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://fakerestapi.azurewebsites.net/index.html\"\n  }, \"fakerestapi.azurewebsites.net\"))), mdx(\"p\", null, \"More practice REST endpoints around a book store inventory API. This one lacks Auth operations so you can't practice token creation. However, Restful Booker (above), does support this.\"), mdx(\"ol\", {\n    \"start\": 4\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Star Wars API \", mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://swapi.dev/\"\n  }, \"SWAPI\"))), mdx(\"p\", null, \"A well-documented public API for Star Wars data that can be used for practicing building your own Postman collection or automated API test suite. \"), mdx(\"h2\", {\n    \"id\": \"other-lists--more-reading\"\n  }, \"Other Lists / More Reading\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://github.com/BMayhew/awesome-sites-to-test-on\"\n  }, \"Awesome Sites to Test On\"))), mdx(\"p\", null, \"Butch Mayhew maintains a list of more sites categorized by security, mobile, performance, and web.\"), mdx(\"ol\", {\n    \"start\": 2\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://automationpanda.com/2021/12/29/want-to-practice-test-automation-try-these-demo-sites/\"\n  }, \"Automation Panda\"))), mdx(\"p\", null, \"Recommended sites by Andrew Knight.\"), mdx(\"ol\", {\n    \"start\": 3\n  }, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"../api-testing-with-nightwatch-supertest/\"\n  }, \"API Testing in Nightwatch.js\"))), mdx(\"p\", null, \"If you know of any other good sites I should include please reach out through my social links below \\uD83D\\uDC47\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"id":"7f7dfbff-bf24-5172-b6f2-90f7634b2b2f"}},"staticQueryHashes":["1961101537","2542493696"]}